package com.example.learn_spring_boot3.exception;

import com.example.learn_spring_boot3.utils.ResponseData;
import org.springframework.core.annotation.Order;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestControllerAdvice;

// 全局异常处理类
@RestControllerAdvice
@Order(99) // 控制多个注解的执行顺序，越小越先执行
public class GlobalExceptionHandler {
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public ResponseEntity<ResponseData<Object>> exception(Exception e) {
        // 这里要把报错信息到打印出来, 不然是不会有提示的
        e.printStackTrace();

        // 这里返回自定义异常, 避免暴露内部信息
        return ResponseEntity.ok(ResponseData.error(500, "系统异常", null));
    }
}